package com.yupi.springbootinit.statemachine.annotation;

import java.lang.annotation.*;

/**
 * 状态转换权限验证注解
 * 用于标记需要进行权限验证的状态转换方法
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface StateTransitionPermission {
    
    /**
     * 实体类型
     * 如：ORDER、PROCESS_SHEET、PRODUCTION_SCHEDULE等
     */
    String entityType() default "";
    
    /**
     * 是否启用权限验证
     * 默认为true
     */
    boolean enabled() default true;
    
    /**
     * 权限验证失败时的错误消息
     */
    String message() default "权限不足，无法执行此操作";
    
    /**
     * 是否记录权限验证日志
     * 默认为true
     */
    boolean logPermissionCheck() default true;
    
    /**
     * 自定义权限验证逻辑的SpEL表达式
     * 可以访问方法参数和返回值
     */
    String condition() default "";
}